export const pageSize = {
	data() {
		return {
			list: [], //数据列表
			next_list: [], //下一页数据
			state: 'loadmore', //是否显示列表尾部提示
			method_name: '', //请求名
			page: 1, //页码
			query: {}, //请求参数
			total: 0, //总数
		}
	},

	onPullDownRefresh() { //下拉刷新
		this.list = [];
		this.resetlist();
		setTimeout(function() {
			uni.stopPullDownRefresh();
		}, 1000)
	},
	onReachBottom() { //上拉加载
		this.addlist(true);
	},
	onHide() {
		this.page = 1
	},
	methods: {
		getList(e) {
			if (e) { //上拉加载是调用
				this.state = 'loading';
			} else { //表示第一次调用 
				this.page = 1
				this.state = 'loadmore'
				this.list = [];
			}
			//下面那个【this.$request.TokenRequest】请求方式是我自己封装的，大家随意变换
			this.$api[this.method_name]({
				...{
					page: this.page
				},
				...this.query
			}).then(res => {
				//如果请求的列表为空，则显示【列表尾部提示】
				if (res.code == 1) {
					if (res.data.data.length == 0) {
						if (e) {
							this.state = 'nomore'
						}
						return;
					}
					if (e) { //判断是否我上拉加载
						this.list = this.list.concat(res.data.data)
					} else {
						//如果请求的列表不为空，则拼接数组到list中
						this.list = res.data.data
					}
					this.getNextPage()
					this.total = res.data.total


					if (this.list.length === this.total) {
						this.state = 'loading';
					}
					this.state = 'loadmore';
				}
			})
		},
		getNextPage() { //下一页数据
			this.$api[this.method_name]({
				...{
					page: this.page + 1
				},
				...this.query
			}).then(res => {
				//如果请求的列表为空，则显示【列表尾部提示】
				if (res.code == 1) {
					if (res.data.data.length == 0) {
						return;
					}
					this.next_list = res.data.data
				}
			})
		},
		del_list(index){
			this.list.splice(index,1)
			this.list.push(this.next_list[0])
			this.getNextPage()
		},

		addlist(e) {
			//上拉之前,判断总条数是否等于实际总条数，如果相等，就显示【列表尾部提示】，如果不相等,页码+1
			if (this.list.length < this.total) {
				this.page++
				this.getList(e);
			} else {
				this.state = 'nomore';
				return;
			}
		},
		resetlist() {
			//下拉刷新，将当前页数重置为1，清空列表
			this.page = 1;
			this.list = [];
			this.getList();
		}
	}
}
